1. Technical Field
The present invention relates to software testing and in particular to unit testing software during its operation. The invention can be applied advantageously, but not exclusively, to software produced using object oriented programming languages such as C++, Corba or Java.
2. Description of Related Art
Automated testing of software during its development is known. The tests are designed as part of a software development process and these are then programmed into specialised test tools and executed automatically. Many tools are commercially available to support this type of software development technique.
Software that checks itself during operation is also known and has been developed and applied widely. This may involve checking pre and post-conditions or assertions and looking for exceptions at appropriate points in the software during its normal execution (See “Self Testing Systems”—M Aylett and P Utton, BT Technology Journal 1992).
Known testing systems enable end-to-end tests to be run on operational software systems in order to test out the operation of individual facilities. However, there are currently no testing systems that easily enable low level tests to be run on a fully integrated and operational system. These tests are often termed “unit tests” and are applied directly to one or more individual units of code (e.g. a function, method, module or agent). This is in contrast to end-to-end tests of a system that run from a system or user interface. Unit tests are currently run manually or automatically during development before integration.